/*
---------------2014-5-8 22:01------------------------
此版本改造了 html,引用了 bootstrap 弹窗的样式；如果再次变更样式，可能造成影响的地方为：

1 窗口尺寸设置
2 窗口最大最小化
3 窗口拖动
4 窗口拖拉大小 

---------------2014-5-8 22:51------------------------
验证过后，基本上只要html不变，样式修改对上面的几点变动问题不大；


---------------2014-5-8 23:03------------------------
文件内多个地方提到预留5像素问题；是因为页面计算时，多4条边，所有高度和宽度会在定义里多出2像素，而这2像素在边缘时刚好可以让浏览器出现滚动条，所以直接在所有计算过程中减少5像素，预留出来，让滚动条不会出现；

---------------2014-5-8 23:10------------------------
如果在 css 样式里面，对 header、body、footer、content 之一进行了 margin 设置，还是会影响到上面所列的计算；只有 padding 不影响；

*/

(function($){
	$.yxDialog = {
		/* 版本号 */
		version : "3.0_beta",	//基于bootstrap 的样式
		auther : "陈 庭",
		
		globalVar : {},  // 全局变量, 用于保存创建时一些配置信息，以便关闭或者其它操作时调用 
		
		initCss : function(options){
			/*默认显示配置及用户当前配置*/
			var defaults = {
				skin: 'default',				//皮肤， 以 skin 目录下面的皮肤目录名为值
				dialogTarget: window.top      // 添加弹出层的目标窗口(有 window.top, window.parent, window.self
			}
			var config = $.extend(defaults,options);
			
			// 动态加入皮肤样式(CSS)
			$("script").each(function () { 
				if(this.src.toString().match(/jquery\.yxDialog.*?js$/)) { 
					// 创建样式表
					$("head", config.dialogTarget.document).append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + this.src.toString().replace(/jquery\.yxDialog.*?js$/, "") + "skin/"+config.skin+"/jquery.yxDialog.css" + "\" id=\"yxDialogCss\" />");
					return false; 
				}
			});
		},
		
		/* 创建弹窗 */
		createWin : function(options) {
			/*默认显示配置及用户当前配置*/
			var defaults = {
				message: '',		//消息框内容(当 iframe 为 true 时， 就输入网址
				width: 300,				//消息框宽度
				height: 185,			//消息框高度
				title: '',			//消息框标题
				skin: 'default',				//皮肤， 以 skin 目录下面的皮肤目录名为值
				callbackAble: false,	//是否打开回调事件，默认不打开, 如有需要,手动传送参数到closeWin来启动回调事件
				callback: function(rv) {},	//回调事件，默认空函数, 传入参数为关闭事件的返回值
				dialogTarget: window.top,      // 添加弹出层的目标窗口(有 window.top, window.parent, window.self
				maskAlphaColor: '#ccc',	//遮罩透明色，默认黑色
				maskAlpha: 0.6,			//遮罩透明度，默认0.1
				iframe: false,			//iframe模式，默认不是样式引入，如果已有，则不引入自带的样式，样式与 bootstrap 区别在于样式前页会增加 'yx-'; 如原来的 bootstrap 为 .modal-dialog, 则现在为 .yx-modal-dialog
				btn: null,				//消息框显示的按钮，默认无(为JSON对象，格式 [{name:"确定", callback: c1}, {name:"关闭", callback: c2}])
				closeTime: 0,			//是否自动关闭，如果数值大于0， 则按毫秒值自动关闭
				fixPosition: false,		// 是否固定位置（即传入的位置[t,l]已经包括了scrollLeft() 和 scrollTop()
				scrollAble: true,      // 是否随滚动条滚动，默认为滚动
				dragable: false,			//是否允许拖动，默认不允许
				resizeable: false,			//是否允许调节窗口大小，默认不允许
				titleBar: true,			//是否显示标题栏，默认显示
				modal: true,			//是否显示遮罩，默认显示
				alarm: false,			//是否打开振动提醒，默认不打开
				winPos: 'c',			//消息框弹出的位置，默认在页面中间(可以输入[0, 0]（left，top）， 或者9个位置，'t'顶，'l'左, 'b'底，'r'右, 'lt'左上, 'lb'左下, 'rt'右上, 'rb'右下, 'c'居中) 
				winAlpha: 0.8,			//拖动时消息框的透明度，默认0.8
				closeBtn: true,			//是否显示关闭按钮，默认显示
				useSlide: false,		//是否启用消息框的淡入淡出效果，默认不启用
				slideSpeed: "slow",		//淡入淡出时间，useSlide=true时有效
				isWinMax: false,        //是否最大化窗口
				maxBtn: false,			//是否显示最大化按钮，默认不显示
				allowSelect:false,		//是否允许选择消息框内容，默认不允许
				allowRightMenu:false,	//是否允许在消息框使用右键，默认不允许
				winName : "",           //窗口的名称， 以区分多窗口，单窗口时可以不设置
				zIndex : 100,            // 窗口的层次，遮罩为此层次减1
				returnValue : null,     // 返回值， 用于关闭事件时
				randName : ""
			}
			var config = $.extend(defaults,options);
			 
			// 设置winName的随机时间， 避免产生缓存问题
			var jsTimestamp = (new Date()).getTime();
			eval("$.yxDialog.globalVar." + config.winName + "_jsTime = jsTimestamp;");
			config.randName = config.winName + jsTimestamp;
			
			// 取得窗口的高度宽度
			var getWindowSize = function(){ 
				var size = {
					width: $(config.dialogTarget.window).width(),
					height: $(config.dialogTarget.window).height()
				};
				return size;
			};

			// 取得元素高度
			var getItemHeight = function(id){ 
				if($('#' + id).is(':hidden')){
					return 0
				}else{
					return $("#" + id, config.dialogTarget.document).height()
				}
			};
			
			// 窗口最大化与还原
			var setWindowMax = function(){
				if(($("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("isMax") || '') == '' || $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("isMax") == 'no'){
					  // 最大化窗口
					  $.yxDialog.setWinSize(getWindowSize().width - 30, getWindowSize().height - 30, config);
					  // 保存窗口位置
					  $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("winTop", $("#yx-modal-window" + config.winName, config.dialogTarget.document).offset().top);
					  $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("winLeft", $("#yx-modal-window" + config.winName, config.dialogTarget.document).offset().left);
					  // 把窗口移左上角对齐
					  $.yxDialog.setWinPos([5, 5], false, config);
					  
					  // 保存最大化状态
					  $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("isMax", "yes");

					  // 变换图标形状
					  $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).text('--');
				  }else{
					  // 还原窗口大小
					  $.yxDialog.setWinSize(config.width, config.height, config);
					  // 还原窗口位置
					  $.yxDialog.setWinPos([$("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("winLeft"), $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("winTop")], true, config);
					  
					  // 保存最大化状态
					  $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).attr("isMax", "no");

					  // 变换图标形状
					  $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).text('+');
				}
			};
			
			// 振动（传入jquery 对象）
			var zd = function(obj){
				var a=['top','left'],b=0;
				var t = obj.offset().top;
				var l = obj.offset().left;
				var u=setInterval(function(){
										obj.css(a[b%2], (a[b%2] == "top" ? t : l) + ((b++)%4<2?0:4));
										  if(b>20){
											  clearInterval(u);
											  b=0;
											  obj.css(a[0], t);
											  obj.css(a[1], l);
										   }
										 },25);
			}
			
			// 遮罩层
			var maskDiv = "";
			if(config.modal){
				maskDiv = "<div id='maskLevel" + config.winName + "' style='background:"+config.maskAlphaColor+";position:absolute;width:"+Math.max($(config.dialogTarget.document).width(), getWindowSize().width)+"px;height:"+Math.max($(config.dialogTarget.document).height(), getWindowSize().height)+"px;top:0;left:0;display:none;text-align:center;z-index:" + (config.zIndex-1) + ";'></div>";
			}else{	//不显示遮罩(防止 select 等控件不能遮挡)
				maskDiv = "<div id='maskLevel" + config.winName + "' style='position:absolute;width:0;height:0x;top:0;left:0;display:none;text-align:center;z-index:" + (config.zIndex-1) + ";'></div>";
			}
			// 弹出DIV层
			var dialogHtml = '';
			//dialogHtml += '<div class="modal" id="yx-modal-window' + config.winName + '" style="z-index:' + config.zIndex + ';">';

			//dialogHtml += '<div class="modal-dialog">';
			dialogHtml += '<div class="yx-modal-content" id="yx-modal-window' + config.winName + '" style="z-index:' + config.zIndex + ';position:absolute;">';

			//头部
			dialogHtml += '<div class="yx-modal-header" id="yx-modal-header' + config.winName + '">';
			dialogHtml += '<h4 class="yx-modal-title">' + config.title + '</h4>';
			dialogHtml += '</div>';

			//内容
			dialogHtml += '<div class="yx-modal-body" id="yx-modal-body' + config.winName + '">';
			dialogHtml += '</div>';

			//底部
			dialogHtml += '<div class="yx-modal-footer" id="yx-modal-footer' + config.winName + '" style="display:none;">';
			dialogHtml += '</div>';
			
			dialogHtml += '</div>';	// modal-content end
			//dialogHtml += '</div>';	// modal-dialog end
			//dialogHtml += '</div>';	// modal end
		
			if(!$("#yx-modal-window" + config.winName, config.dialogTarget.document).length>0){ // 是否已经存在窗口层
				// 把DIV层添加到页面
				$("body", config.dialogTarget.document).append(maskDiv);
				$("body", config.dialogTarget.document).append(dialogHtml);
				// 显示 DIV 层
				if(config.useSlide){
					$("#maskLevel" + config.winName, config.dialogTarget.document).fadeTo(config.slideSpeed, config.maskAlpha);
					$('#yx-modal-window' + config.winName, config.dialogTarget.document).fadeIn(config.slideSpeed);
				}else{
					$("#maskLevel" + config.winName, config.dialogTarget.document).show();
					$("#yx-modal-window" + config.winName, config.dialogTarget.document).show();
				}
			}else{
				// 显示 DIV 层
				if(config.useSlide){
					$("#maskLevel" + config.winName, config.dialogTarget.document).fadeTo(config.slideSpeed, config.maskAlpha);
					$('#yx-modal-window' + config.winName, config.dialogTarget.document).fadeIn("slow");
				}else{
					$("#maskLevel" + config.winName, config.dialogTarget.document).show();
					$("#yx-modal-window" + config.winName, config.dialogTarget.document).show();
				}
			}
			
			//把body的margin和padding设置为 0，只有使用 bootstrap 原生样式时需要
			$("#yx-modal-body" + config.winName, config.dialogTarget.document).css({"padding":"0px", "margin":"0px"});

			// 设置背景透明度
			if (!$.support.leadingWhitespace){	
			   $("#maskLevel" + config.winName, config.dialogTarget.document).css("filter", 'progid:DXImageTransform.Microsoft.Alpha(opacity='+config.maskAlpha*100+')');
			}else{
				$("#maskLevel" + config.winName, config.dialogTarget.document).css("opacity", config.maskAlpha);
			}
			
			// 不要标题行
			if(!config.titleBar){
				$('#yx-modal-header' + config.winName, config.dialogTarget.document).hide();
			}
			
			// 是否为 iframe
			if(config.iframe){
				var iframeUrl = config.message;
				if(config.message.indexOf('?') != -1){
					iframeUrl = iframeUrl + "&jsTimestamp=" + (new Date()).getTime();
				}else{
					iframeUrl = iframeUrl + "?jsTimestamp=" + (new Date()).getTime();
				}
				$("#yx-modal-body" + config.winName, config.dialogTarget.document).html("<iframe src='"+iframeUrl+"' style='height:100%; width:100%;' scrolling='auto' frameborder='0' id='yx-modal-iframe" + config.winName + "' name='yx-modal-iframe" + config.winName + "' winName='" + config.winName + "'></iframe>");
				
				// 为iframe 设置打开对象
				$("#yx-modal-iframe" + config.winName, config.dialogTarget.document).load(function(){
						if(config.winName != ""){
							eval("config.dialogTarget." + config.winName + "= {opennerWindow : window, opennerDocument : document, yxDialog : $.yxDialog}");
						}else{
							config.dialogTarget.dialog = {opennerWindow : window, opennerDocument : document, yxDialog : $.yxDialog};
						}
						//if($.browser.msie){  // 判断是否IE
							config.dialogTarget.window.frames["yx-modal-iframe" + config.winName].opennerWindow = window;
							config.dialogTarget.window.frames["yx-modal-iframe" + config.winName].opennerDocument = document;
							config.dialogTarget.window.frames["yx-modal-iframe" + config.winName].yxDialog = $.yxDialog;
							/*
						}else{
							config.dialogTarget.window.frames["yx_iframe" + config.winName].contentWindow.opennerWindow = window;
							config.dialogTarget.window.frames["yx_iframe" + config.winName].contentWindow.opennerDocument = document;
							config.dialogTarget.window.frames["yx_iframe" + config.winName].contentWindow.yxDialog = $.yxDialog;
						}
						*/
				});
			}else{
				$("#yx-modal-body" + config.winName, config.dialogTarget.document).html(config.message);
			}

			// 是否可以选择内容
			if(!config.allowSelect){
				//$("#yx-modal-window" + config.winName, config.dialogTarget.document)[0].onselectstart = function(){return false;};
			}
			
			// 是否可以按右键
			if(!config.allowRightMenu){
				//$("#yx-modal-window" + config.winName, config.dialogTarget.document)[0].oncontextmenu = function(){return false;};
			}
			
			// 是否显示振动提醒
			if(config.alarm){
				$("#maskLevel" + config.winName, config.dialogTarget.document).click(function(){
											   zd($("#yx-modal-window" + config.winName, config.dialogTarget.document));
											   });	
			}
			
			// 是否显示最大化按钮
			if(config.maxBtn){
				var maxBtnStr = '<button type="button" class="close" id="yx-modal-max-btn' + config.winName + '" title="最大化">+</button>';
				$("#yx-modal-header" + config.winName, config.dialogTarget.document).prepend(maxBtnStr);
				// 最大化，还原
				$("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).click(function(){
					  setWindowMax();
				});
			}
			
			// 是否显示关闭按钮
			if(config.closeBtn){
				var closeBtnStr = '<button type="button" class="close" id="yx-modal-close-btn' + config.winName + '" title="关闭">×</button>';
				$("#yx-modal-header" + config.winName, config.dialogTarget.document).prepend(closeBtnStr);
				// 关闭事件
				$("#yx-modal-close-btn" + config.winName, config.dialogTarget.document).click(function(){
					$.yxDialog.closeWin(config);
				});
			}
			
			// 是否自动关闭
			if(config.closeTime > 0){
				setTimeout(function(){$.yxDialog.closeWin(config);return false;}, config.closeTime);
			}
			
			// 添加按钮
			if(config.btn != null){
				if($.isArray(config.btn)){
					for(var i in config.btn){
						$("#yx-modal-footer" + config.winName, config.dialogTarget.document).append("<input type='button' class='btn btn-default' id='yx-modal-btn_" + i + "_" + config.winName + "' name='yx-modal-btn_" + i + "_" + config.winName + "' value='" + config.btn[i].name + "' />");

						$("#yx-modal-btn_" + i + "_" + config.winName, config.dialogTarget.document).click(function(e){
						 try{
							 var btnIndex = (e.srcElement.id).split('_');
							 config.btn[parseInt(btnIndex[2])].callback() || function(){};
						 }catch(e){}});
					}
				}else{
					var cb = config.btn.callback || function(){};
					$("#yx-modal-footer" + config.winName, config.dialogTarget.document).append("<input type='button' class='btn btn-default' id='yx-modal-btn_0_" + config.winName + "' name='yx-modal-btn_0_" + config.winName + "' value='" + config.btn.name + "' />");
					$("#yx-modal-btn_0_" + config.winName, config.dialogTarget.document).click(function(){try{cb();}catch(e){}});
				}
			}

			// 拖动
			if(config.dragable){
				$("#yx-modal-header" + config.winName, config.dialogTarget.document).css("cursor", "move");
				$("#yx-modal-header" + config.winName, config.dialogTarget.document).mousedown(
								 function(e){
									 var win = $("#yx-modal-window" + config.winName, config.dialogTarget.document);
									 
									 if ((e.srcElement || e.target).parentNode == $("#yx-modal-close-btn" + config.winName, config.dialogTarget.document).get(0) || (e.srcElement || e.target).parentNode == $("#yx-modal-max-btn" + config.winName, config.dialogTarget.document).get(0)) return false; //点击操作按钮不进行启用拖动处理
									 
									 // 处理 css 值
									var f = function(k){return parseInt(win.css(k))||false;};

									// 设置背景透明度
									if(jQuery.browser.msie){
									   win.css("filter", 'progid:DXImageTransform.Microsoft.Alpha(opacity='+config.winAlpha*100+')');
									}else{
										win.css("opacity", config.winAlpha);
									}
														   
										  
									  if(win.css('position') != 'relative'){
										var p = win.position();
										if(!($.browser.msie&&($.browser.version == "6.0"))&&(win.css('position')== 'fixed')){
											   p.top-=$(config.dialogTarget.window).scrollTop();p.left-=$(config.dialogTarget.window).scrollLeft();
										  }
									  }
									  var winData = {X:p.left||	 f('left')|| 0, Y:p.top|| f('top')||	0, W:f('width')|| win.width()|| 0, H:f('height')|| win.height()||0, pX:e.pageX, pY:e.pageY, o:win.css('opacity')};
									  // 绑定拖动与关闭
									  $(config.dialogTarget.document).mousemove(
										function(e){
											// 防止移出窗口可视范围
											var sLeft = winData.X+e.pageX-winData.pX;
											var sTop = winData.Y+e.pageY-winData.pY;
											var pos = [$(config.dialogTarget.window).scrollLeft(), $(config.dialogTarget.window).scrollTop()],
											sl = pos[0],
											st = pos[1];
											sLeft = Math.min(Math.max(sLeft, sl), getWindowSize().width - win.width() + sl - 5);	//多减5像素，防止出现滚动条
											sTop = Math.min(Math.max(sTop, st), getWindowSize().height - win.height() + st - 5);	//多减5像素，防止出现滚动条
											
											// 移动
										   $.yxDialog.setWinPos([sLeft, sTop], true, config);
										   return false;
										}).mouseup(function(){
											// 设置背景透明度
											if(jQuery.browser.msie){
											   win.css("filter", 'progid:DXImageTransform.Microsoft.Alpha(opacity=100)');
											}else{
												win.css("opacity", 1);
											}
											// 关闭拖动
											$(config.dialogTarget.document).unbind('mousemove').unbind('mouseup');
										});
								  }
								  );
			}

			// 调节大小
			if(config.resizeable){
				$("#yx-modal-window" + config.winName, config.dialogTarget.document).append("<div style='position:absolute;bottom:0;right:0;height:5px; width:5px; background:#F00;cursor:se-resize; overflow:hidden;' id='yx-modal-resize-div" + config.winName + "'></div>");

				$("#yx-modal-resize-div" + config.winName, config.dialogTarget.document).mousedown(
								 function(e){ 
								 var win = $("#yx-modal-window" + config.winName, config.dialogTarget.document);
									 // 处理 css 值
									var f = function(k){return parseInt(win.css(k))||false;};

									  var winData = {W:f('width')|| win.width()|| 0, H:f('height')|| win.height()||0, pX:e.pageX, pY:e.pageY, o:win.css('opacity')};
									  // 绑定拖动与关闭
									  $(config.dialogTarget.document).mousemove(
										function(e){
											$.yxDialog.setWinSize(Math.max(e.pageX-winData.pX+winData.W, 6), Math.max(e.pageY-winData.pY+winData.H, getItemHeight("yx-modal-header" + config.winName) + getItemHeight("yx-modal-footer" + config.winName)), config);
										   return false;
										}).mouseup(function(){
											// 关闭调节 
											$(config.dialogTarget.document).unbind('mousemove').unbind('mouseup');
										});
								  }
								  );
			}
			
			// 当窗口滚动时
			if(config.scrollAble){
				$(config.dialogTarget.window).scroll(function(){
					var p = [$(config.dialogTarget.window).scrollLeft(), $(config.dialogTarget.window).scrollTop()];
					l = parseInt($("#yx-modal-window" + config.winName, config.dialogTarget.document).attr("l"));
					t = parseInt($("#yx-modal-window" + config.winName, config.dialogTarget.document).attr("t"));
					$.yxDialog.setWinPos([l + parseInt(p[0]),  t + parseInt(p[1])], true, config);
			  });
			}

			// 设置窗口高宽度
			$.yxDialog.setWinSize(config.width, config.height, config);

			// 设置窗口定位
			$.yxDialog.setWinPos(config.winPos, config.fixPosition, config);
			
			// 是否最大化
			if(config.isWinMax){
				setWindowMax();
			}
			
			// 设置全局变量
			if(config.winName != ""){
				eval("$.yxDialog.globalVar." + config.winName + "= {callback : config.callback, useSlide: config.useSlide, slideSpeed: config.slideSpeed, dialogTarget: config.dialogTarget};");
			}else{
				$.yxDialog.globalVar.dialog = {callback : config.callback, useSlide: config.useSlide, slideSpeed: config.slideSpeed, dialogTarget: config.dialogTarget};
			}
		},
		/* 设置弹窗大小 */
		setWinSize : function(w, h, options){
			var defaults = {
				dialogTarget: window.top,
				winName : ""
			}
			var config = $.extend(defaults,options);

			$("#yx-modal-window" + config.winName, config.dialogTarget.document).height(h);
			$("#yx-modal-window" + config.winName, config.dialogTarget.document).width(w);

			var contentH = $("#yx-modal-window" + config.winName, config.dialogTarget.document).innerHeight();
			var headerH = $("#yx-modal-header" + config.winName, config.dialogTarget.document).outerHeight();
			if($("#yx-modal-header" + config.winName).is(':hidden')){
				headerH = 0;
			}
			/*
			var footerH = $("#yx-modal-footer" + config.winName, config.dialogTarget.document).outerHeight();
			if($("#yx-modal-footer" + config.winName).is(':hidden')){
				footerH = 0;
			}
			*/
			footerH = 5;	//屏蔽了底部工具条

			var bodyH = contentH - headerH - footerH;
			
			$("#yx-modal-body" + config.winName, config.dialogTarget.document).outerHeight(bodyH);
			$("#yx-modal-body" + config.winName, config.dialogTarget.document).height(bodyH);
		},
		/* 设置弹窗位置 */
		setWinPos : function(winPos, fixPosition, options){
			var defaults = {
				dialogTarget: window.top,
				winName : ""
			}
			var config = $.extend(defaults,options);
			
			var pos = $.yxDialog.getPos(winPos, $.extend(config, {fixPosition : fixPosition}));

			sl = pos[0];
			st = pos[1];
			
			$("#yx-modal-window" + config.winName, config.dialogTarget.document).css({"top":parseInt(st)||st,"left":parseInt(sl)||sl});

			$("#yx-modal-window" + config.winName, config.dialogTarget.document).attr("t", parseInt(st) - parseInt($(config.dialogTarget.window).scrollTop())).attr("l", parseInt(sl) - parseInt($(config.dialogTarget.window).scrollLeft()));
		},
		/* 关闭弹窗 */
		closeWin : function(options){
			var defaults = {
				callbackAble: false,
				winName : "",
				returnValue : null 
			}
			var config = $.extend(defaults,options);
			
			var globalVar = null;

			// 调用回调函数
			try { 
				if(config.winName != ""){
					eval("globalVar = $.yxDialog.globalVar." + config.winName);
				}else{
					globalVar = $.yxDialog.globalVar.dialog;
				}

				if(config.callbackAble){ // 是否执行回调事件
					globalVar.callback(config.returnValue);
				}
			} catch(e) {
				alert(e.name + " : " + e.message)
			};
			// 删除弹出层
			if($("#maskLevel" + config.winName, globalVar.dialogTarget.document).length>0){
				if(globalVar.useSlide){
					$("#maskLevel" + config.winName, globalVar.dialogTarget.document).fadeTo(globalVar.slideSpeed, 0, function(){$("#maskLevel" + config.winName, globalVar.dialogTarget.document).remove(); return false;});
				}else{
					$("#maskLevel" + config.winName, globalVar.dialogTarget.document).remove();
				}
			}
			if($("#yx-modal-iframe" + config.winName, globalVar.dialogTarget.document).length>0){	//先删除iframe
				$("#yx-modal-iframe" + config.winName, globalVar.dialogTarget.document).remove();
			}
			if($("#yx-modal-window" + config.winName, globalVar.dialogTarget.document).length>0){
				$("#yx-modal-iframe" + config.winName, globalVar.dialogTarget.document).remove();
				
				if(globalVar.useSlide){
					$('#yx-modal-window' + config.winName, globalVar.dialogTarget.document).fadeOut(globalVar.slideSpeed, function(){$("#yx-modal-window" + config.winName, globalVar.dialogTarget.document).remove(); return false;});
				}else{
					$("#yx-modal-window" + config.winName, globalVar.dialogTarget.document).remove();
				}
			}
		},
		/*计算指定位置的坐标，返回数组*/
		getPos : function(winPos, options) {
				/*传入有效的数组，则采用用户坐标（需要做简单处理），否则根据传入字符串到map中匹配，如果匹配不到则默认采用c配置*/		
			var defaults = {
				dialogTarget: window.top, 
				fixPosition: false,
				winName : ""
			}
			var config = $.extend(defaults,options);
			
			//9个常用位置常数
			var posMap = {
				c: '{0}/2+{2},{1}/2+{3}', // 中
				l: '{2},{1}/2+{3}',   // 左
				r: '{0}+{2},{1}/2+{3}',  // 右
				t: '{0}/2+{2},{3}',  // 顶
				b: '{0}/2,{1}+{3}',    // 底
				lt: '{2},{3}',         // 左上角
				lb: '{2},{1}+{3}',     // 左下角
				rb: '{0}+{2},{1}+{3}', //右下角
				rt: '{0}+{2},{3}'     // 右上角
			};

			// 0 left; 1 top; 2 scrollLeft; 3 scrollTop;

			var p = config.fixPosition ? [0, 0] : [$(config.dialogTarget.window).scrollLeft(), $(config.dialogTarget.window).scrollTop()];
			
			var f = $.isArray(winPos) && winPos.length == 2 ? (winPos[0] + '+{2},{3}+' + winPos[1]) : (posMap[winPos] || posMap['c']);
			var pos = [$(config.dialogTarget.window).width() - $("#yx-modal-window" + config.winName, config.dialogTarget.document).width() - 5, $(config.dialogTarget.window).height() - $("#yx-modal-window" + config.winName, config.dialogTarget.document).height() - 5].concat(p);	//减多5像素，防止在边缘时出现滚动条；
			
			var arr = f.replace(/\{(\d)\}/g,function(s, s1) {return pos[s1]}).split(',');

			return [eval(arr[0]), eval(arr[1])];
		}
    };	
})(jQuery);